=========================================================================
ISTRUZIONI e SPECIFICHE per il TERZO ASSEGNAMENTO INFORMATICA anno 2015
========================================================================
L'assegnamento prevede lo sviluppo di una libreria di funzioni C
che lavorano su liste di stringhe.

------------------------------------------------
Estrarre il materiale dal KIT dell'assignment
------------------------------------------------
Creare una directory temporanea, copiare kit_a3.tar  
nella directory e spostarsi nella directory appena creata. Es.

$$ mkdir Assegnamento3
$$ mv kit_a3.tar Assegnamento3
$$ cd Assegnamento3

S-tarare i file del kit con

$$ tar xvf kit_a3.tar

questo comando crea nella directory corrente una directory "LISTE" con i seguenti file

$$ ls LISTE
liste.h			: file che contiene i prototipi delle funzioni 
 			da realizzare (NON MODIFICARE)

liste_docenti.c		: file che contiene l'implementazioni delle funzioni 
                        di creazione e stampa fornite dai docenti
 			(NON MODIFICARE)

test-*.c
Makefile
			: programmi di test e Makefile per i test e 
                        la consegna dell'assegnamento (NON MODIFICARE)

*.txt			: file di dati da elaborare


README-3		: questo file

gruppo-check.pl		: uno script Perl che controlla il formato del file
			  gruppo.txt prima di effettuare la consegna
			  (NON MODIFICARE)

gruppo.txt		: un file di esempio di specifica del gruppo
			  (solo 1 studente per gruppo)
			  (deve essere aggiornato con i dati di chi consegna,
			  secondo il formato esemplificato)

========================================================================
ISTRUZIONI per la realizzazione dell'assegnamento
========================================================================

L'assegnamento prevede la realizzazione delle  funzioni i cui
prototipi sono specificati in liste.h. 
Le funzioni possono essere implementate in un unico file "liste.c" o
in piu' file, in questo caso il Makefile va modificato con i target
necessari ad avere una compilazione corretta dei programmi di test. 

I commenti in liste.h spiegano il comportamento delle varie funzioni,
il significato dei parametri ed i valori restituiti secondo la usuale
sintassi doxygen usata negli altri assegnamenti.

Conviene testare le funzioni man mano che vengono sviluppate con dei
main() di test evitando di scrivere tutto il codice prima di testarne
il funzionamento.  
Questo permette di localizzare molto meglio errori ed anomalie.

Solo quando siamo ragionevolmente convinti della correttezza del
codice si puo' passare al testing automatico del codice con i test
forniti dai docenti. 

------------------
Come procedere :
-----------------

1) leggere attentamente gli esercizi e capire il funzionamento il codice di test
   fornito dai docenti 

2) implementare le funzioni richieste ed effettuare testing
   preliminare utilizzando programmi sviluppati allo scopo

3) testare il software con i test forniti dai
  docenti. 

       bash:~$ make test1
       bash:~$ make test2
       bash:~$ make test3

  NOTA: (1) tutti i file sviluppati per la soluzione si devono trovare nella
  directory LISTE
  (2) E' importante che il test fornito dai docenti venga effettuato solo su
  un programma gia' funzionante e testato altrimenti i risultati
  possono essere di difficile interpretazione, fuorvianti o inutili.

4) preparare la documentazione: ovvero commentare adeguatamente il/i file che
   contengono la soluzione  ed inserire una intestazione contenente il nome
   dello sviluppatore ed una dichiarazione di originalita' 

   /** \file pippo.c
       \author Nino Bixio 123456
     Si dichiara che il contenuto di questo file e' in ogni sua parte opera
     originale dell' autore.  */


6) aggiornare il file "gruppo.txt" con nome e dati

7) consegnare il file ESCLUSIVAMENTE eseguendo

      bash:~$ make consegna

   e seguendo le istruzioni. 
   Il target consegna crea un file tar che deve essere inviato
   all'indirizzo del docente insieme a un file PDF con la discussione 
   degli esercizi con subject

   "info15: consegna terzo assegnamento"

   SE IL MAKE non funziona nel vostro ambiente di lavoro, 
   consegnare un file TAR contenente 
   ESCLUSIVAMENTE il file gruppo.txt ed i file sviluppati (liste.c piu' 
   eventuali altri, se modificate il makefile consegnate anche la vostra versione modificata), il nome del file tar deve contenere 
   CORSO di   appartenenza,
   nome, cognome e matricola (che devono essere ripetuti nella mail di consegna)
   Ad esempio nel caso sello studente Bixio il file puo' chiamarsi
   
   Anino.bixio.123456-a1.tar

   generato con

   tar cvf  Anino.bixio.123456-a1.tar ./gruppo.txt ./liste.c

   Tutte le consegne verranno confermate con un messaggio entro 2/3
   giorni all'indirizzo da cui e' stata effettuata la consegna. In
   caso questo non si verifichi contattare il docente.
   
   Alla consegna del terzo assegnamento e' possibile anche consegnare
   delle nuove versioni ottimizzate/corrette dei primi due assegnamenti. La
   valutazione complessiva della qualita' del codice prodotto verra'
   fatta sull'ultima versione consegnata di ciascun assegnamento.

---------------------------------------
 NOTE IMPORTANTI: LEGGERE ATTENTAMENTE
---------------------------------------

1) gli eleborati contenenti tar non creati con "make consegna" o comunque 
   seguendo le istruzioni riportate sopra non
   verranno accettati (gli studenti sono invitati a controllare che
   il tar contenga il file liste.c con il comando " tar tvf
   nomefiletar " prima di inviare il file)

2) tutti gli elaborati verranno confrontati fra di loro con tool automatici
   per stabilire eventali situazioni di PLAGIO. Se gli elaborato sono 
   ragionevolmente simili verranno scartati.

3) Chi in sede di orale risulta palesemente non essere l'autore del software
   consegnato in uno degli assegnamenti dovra' ripetere l'esame

4) Tutti i comportamenti scorretti ai punti 2 e 3 verranno segnalati
   ufficialmente al presidente del corso di laurea

----------------------------
 VALUTAZIONE DELL'ASSEGNAMENTO:
----------------------------

Gli studenti che consegnano una versione funzionante e ragionevolmente
corretta dell'assegnamento entro la data di scadenza accumulano un bonus di 2
punti che verra' sommato al voto finale (vedi lucidi lezioni ed
esercitazioni).

La qualita' del codice consegnato e delle discussioni fornite per i 3
assegnamenti sara' valutata complessivamente da 0 a 30 e costituira'
il voto di partenza in sede di esame.
